//axios的使用
import axios from 'axios'
import Vue from 'vue'

import router from './router/index'

const http = axios.create({
	baseURL: process.env.VUE_APP_API_URL || '/admin/api' //上线发布时的请求接口地址，在环境变量中添加接口地址
	// baseURL: 'http://localhost:3000/admin/api'   //开发环境下
})

//添加拦截器，目的是为了在发请求时在请求头中加token
http.interceptors.request.use(config => {
	if (localStorage.token) {
		//在请求头中设置Authorization属性，发送token,'Bearer'表示类型（必须加）
		config.headers.Authorization = 'Bearer ' + localStorage.token
	}
	return config
}, err => {
	return Promise.reject(err)
})

//为整个http请求加一个拦截器，用来捕获服务端返回的异常状态(也可以在需要的页面上单独写，但不方便，一般写到这里表示全局)
http.interceptors.response.use(res => {//状态码正常走res
	return res
}, err => {//挡状态码大于400时会走err
	if (err.response.data.message) {
		//在vue原型上挂载element的一个提示方法，当未查询到用户（状态码422）时弹框提示
		Vue.prototype.$message({
			type: 'error',
			message: err.response.data.message
		})
		//当状态码为401时自动跳转回登录页
		if (err.response.status === 401) {
			router.push('/login')
		}
	}
	return Promise.reject(err)
})

export default http